package com.pb.infra.auth.mapper;

import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 登录管理模块（DAO映射类）
 *
 * @Author:liudebao
 * @Date: 2019/8/10
 */
@Repository
public interface LoginMapper {

    /**
     * 读取某个用户信息
     *
     * @param paramMap 请求参数
     * @return List<Map < String, Object>> 某个用户信息
     */
    List<Map<String, Object>> getUserById(Map<String, Object> paramMap);

    /**
     * 读取某个用户配置的角色信息
     *
     * @param paramMap 请求参数
     * @return List<Map < String, Object>> 某个用户配置的角色信息
     */
    List<Map<String, Object>> getRoleByUserId(Map<String, Object> paramMap);

    /**
     * 读取某用户配置的功能权限信息
     *
     * @param paramMap 请求参数
     * @return List<String> 某用户配置的功能权限信息
     */
    List<Map<String, Object>> getUserAccess(Map<String, Object> paramMap);

    /**
     * 读取全量功能权限信息
     *
     * @return List<String> 全量功能权限信息
     */
    List<Map<String, Object>> getAllAccess();

    /**
     * 读取登录用户能访问的菜单信息
     *
     * @param paramMap 请求参数
     * @return List<Map < String, Object>> 登录用户能访问的菜单信息
     */
    List<Map<String, Object>> getRouter(Map<String, Object> paramMap);

    /**
     * 读取全量菜单信息
     *
     * @return List<Map < String, Object>> 全量菜单信息
     */
    List<Map<String, Object>> getAllRouter();

    /**
     * 用户所属法人集合
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selCorpId(Map<String, Object> paramMap);

    /**
     * 用户主职位角色
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selMainRole(Map<String, Object> paramMap);

    /**
     * 用户职位包含菜单
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selPositionRouter(Map<String, Object> paramMap);

    /**
     * 用户职位包含角色
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selPositionRole(Map<String, Object> paramMap);

    /**
     * 修改密码
     * @param paramMap
     */
    void updatePassword(Map<String, Object> paramMap);

    /**
     * 法人密码规则
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selPassRule(Map<String, Object> paramMap);

    /**
     * 用户主法人
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selMainCorpId(Map<String, Object> paramMap);

    /**
     * 系统菜单
     * @return
     */
    List<Map<String, Object>> getSysRouter(Map<String, Object> paramMap);

    /**
     * 递归方法获取菜单
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> getRouterData(Map<String, Object> paramMap);

    /**
     * 所有法人
     * @return
     */
    List<Map<String, Object>> selSysCorp();

    /**
     * 用户主职位包含管理角色查询的菜单
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> getAdminRole(Map<String, Object> paramMap);

    /**
     * 用户非主职位包含管理角色查询的菜单
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> getPosAdminRole(Map<String, Object> paramMap);

    /**
     * 用户状态
     * @param userId
     * @return
     */
    List<Map<String, Object>> selUserInfo(String userId);

    /**
     * 法人密码策略
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selCorpPassRule(Map<String, Object> paramMap);

    /**
     * 锁定用户
     * @param paramMap
     */
    void lockUser(Map<String, Object> paramMap);

    /**
     * 菜单接口
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selInterface(Map<String, Object> paramMap);

    /**
     * 用户主职位信息
     * @param userId
     * @return
     */
    List<Map<String, Object>> selUserData(String userId);

    List<Map<String, Object>> selUserPositionData(Map<String, Object> paramMap);

    List<Map<String, Object>> selMenuParent(String id);

    List<Map<String, Object>> selMenuData(String id);

}
